package com.gxa.user.service;

import com.github.pagehelper.PageInfo;
import com.gxa.user.dto.Keywords;
import com.gxa.user.dto.MyParam;
import dto.ResultDTO;
import entity.Member;
import io.swagger.models.auth.In;
import org.springframework.web.multipart.MultipartFile;

import java.awt.geom.RectangularShape;
import java.util.List;

/**
 * (Member)表服务接口
 *
 * @author makejava
 * @since 2021-05-10 19:01:12
 */
public interface MemberService {

    /**
     * 通过ID查询单条数据
     *
     * @param memberId 主键
     * @return 实例对象
     */
    Member queryById(Integer memberId);



    /**
     * 修改数据
     *
     * @param member 实例对象
     * @return 实例对象
     */
    Member update(Member member);

    /**
     * 通过主键删除数据
     *
     * @param memberId 主键
     * @return 是否成功
     */
    boolean deleteById(Integer memberId);

    /**
     * 查询所有，带分页
     */
    PageInfo findAll(MyParam param);

    /**
     * 查询所有，不带分页
     */
    ResultDTO findAllNoPage();

    /**
     * 删除用户
     */
    ResultDTO delete(Integer memberId);

    /**
     * 禁用用户
     */
    ResultDTO disable(Integer memberId);
    /**
     * 启用用户
     */
    ResultDTO able(Integer memberId);

    /**
     * 根据id查询用户是否存在
     */
    ResultDTO query(Integer id);

    /**
     * 根据传入对象，判断传入信息是否存在
     */
    ResultDTO queryMember(Member member);

    /**
     * 根据关键字查询
     */
    ResultDTO queryByKeywords(Keywords keywords);

    /**
     * 根据用户id查询所有信息，包括角色等
     */
    ResultDTO findAllById(Integer memberId);
    /**
     * 根据用户id查询所有信息，包括角色等
     */
    ResultDTO findAllByTt(Integer memberId);

    /**
     * 查询管理员邮箱
     */
    ResultDTO selectEmail();

    /**
     * 根据部门id和角色id查询
     */
    ResultDTO findByDeptIdAndRoleId(Integer deptId,Integer roleId);

    /**
     * 查询总经理
     */
    ResultDTO findBoss();

    /**
     * 根据城市Id查城市
     */
    ResultDTO findByCityId(Integer cityId);


    /**
     * 查询城市和城市Id
     */
    ResultDTO findCityAndCityId();

    /**
     * 新增员工
     */
    ResultDTO insertUser(Member member);


    /**
     * 输入原密码改密码
     */
    ResultDTO updatePassword(Integer memberId,String memberPwd,String newPwd);

    /**
     * 发邮件改密码
     */
    ResultDTO updatePwd(Integer memberId,String newPwd,String code);

    /**
     * 发送邮件
     */
    ResultDTO sendEmail(Member member);

    /**
     * 修改员工所有信息
     */
    ResultDTO updateAll(Member member);

    /**
     * 设置用户为常用旅客
     */
    ResultDTO updateIsUsual(Integer memberId,Integer isUsual);

    /**
     * 上传头像
     */
    ResultDTO updateImg(Integer memberId, MultipartFile file);
}
